// axios  请求
import Vue from "vue";
import axios from "axios";

// 导入路由
import router from "../../router/index";
// 按需导入获取token
import { getToken, removeToken } from "./token";

// 设置基准路径
axios.defaults.baseURL = process.env.VUE_APP_BASEURL;

// 设置允许携带cookies
axios.defaults.withCredentials = true;

// 添加请求拦截器
axios.interceptors.request.use(
  function(config) {
    // 将token放在请求头上带过去
    // 获取token
    const token = getToken();
    if (token) {
      config.headers.token = token;
    }
    return config;
  },
  function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
// 设置响应拦截器
axios.interceptors.response.use(
  function(response) {
    // 对响应数据做点什么
    // console.log(response);
    // console.log(response.data.code);
    // 206表示token错误或无效

    if (response.data.code == 206) {
      // 2返回到登入页
      router.push("/login");
      // 1 无效的token删除
      removeToken();
      return response.data; // 这里空也要返回 不然如果响应回来token失效
      // 那么渲染的数据res就是undefined  undefined点属性 会报错
    }
    return response.data;
  },
  function(error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

Vue.prototype.$http = axios;
